쿠버네티스 work-node 서버 종료 이후 rejoin


문제발생

  • 클라우드 서버를 이용해서 쿠버네티스를 구축했는데, 클라우드 서비스의 이용 가격 때문에 워커노드를 종료시켰습니다. 하지만 워커노드를 재시작하였을 때, 컨트롤 플래인(마스터 노드)랑 연결이 안되는 문제가 있었습니다. 이를 해결한 방법을 잊지 않기 위해 적어봅니다.

1  masterNode 확인

해결방안

마스터노드에서 진행

  1. 현재 조인되어 있는 워커노드들을 삭제
$ kubectl delete nodes [워커노드 이름]
  1. 현재 조인이 가능한 토큰 확인
$ kubeadm token list
  1. 토큰 생성
$ kubeadm token create
  1. 토큰 값을 해쉬 값으로 변경

$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

2  토큰생성

워커노드에서 진행

  1. 기존에 연결된 클러스터를 리셋
$ kubeadm reset
# "y" 입력

3  쿠버네티스 리셋

  1. 리셋 후 메뉴얼에 따라 환경설정 파일도 모두 삭제
$ rm -rf $HOME/.kube/

3-1  쿠버네티스 리셋

  1. free 명령어로 swap 메모리 사용중인지 확인 및 swap 사용 중지
# swap 메모리 확인
$ free
# swap 메모리 중지
$ swapoff -a
  1. kubeadm 명령어로 쿠버네티스 클러스터 조인하기

    • kubeadm join —discovery-token [토큰명] —discovery-token-ca-cert-hash sha256:[해쉬값 ][마스터 노드ip주소:포트번호]
    • IP주소를 확인하는 방법은 ifconfig 명령어로 eth0 네트워크 카드 주소를 확인하면 됨
    • 6443 포트 : Kubernetes API Server / Used By All - 마스터노드에서 필수적으로 사용해야 하는 포트번호
kubeadm join --discovery-token m5j2gy.cjmczii6g5ivsu77 --discovery-token-ca-cert-hash sha256:cafed3e44fafa2b149dd00dbef6752ce3bb2c422be91e4478d04ac59e9c38db8 172.27.0.126:6443
  1. 검증 - 워커노드가 정상적으로 연결됨

4  확인

번외 - reference

블로그 글

쿠버네티스가 사용하는 포트번호를 검색하다가 상세하게 설명한 좋은 블로그 글이 있어서 참조함

마스터 노드에서는 6443, 2379~2380, 10250, 10251, 10252 포트가 사용되고 있지 않아야 한다.

  • 마스터 노드에서 필요한 필수 포트
  • 6443 포트 : Kubernetes API Server / Used By All
  • 2379~2380 포트 : etcd server client API / Used By kube-apiserver, etcd
  • 10250 포트 : Kubelet API / Used By Self, Control plane
  • 10251 포트 : kube-scheduler / Used By Self
  • 10252 포트 : kube-controller-manager / Used By Self

워커 노드에서는 10250, 30000~32767 포트가 사용되고 있지 않아야 한다.

스왑 메모리 비활성화

  • 서버를 끄지 않고 계속 사용한다면 swapoff -a의 명령어도 충분하지만, 매번 껐다 켜야 할 경우 아래의 명령어를 추천
  • /etc/fstab 파일은 해당 서버가 사용하는 스토리지에 대한 정보를 작성하는 곳으로 루트 파티션의 정보가 들어있는 정보를 주석으로 처리할 시 서버가 먹통이 될 수 있으므로 매우 조심
  • 아래의 명령어는 1번째 줄의 명령어 앞에 #(주석)를 붙이는 명령어임
$ sed -i '1s/^/#/' /etc/fstab

Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github